S3 で静的ウェブサイトホスティング用のバケットを GuardDuty が検出するときの対処方法
困っていた内容
S3 で静的ウェブサイトホスティングを用いて、ウェブサイトを公開しています。
ホスティング用のバケットはパブリックアクセス可能な状態にしていますが、GuardDuty が検出します。
この検出結果は理解しているので、検出結果から除外したいです。何かいい方法はありますか?
どう対応すればいいの?
GuardDuty には指定した条件をアーカイブして検出結果をフィルタリングする、抑制ルールといった機能があります。
やってみた
GuardDuty を有効化する
GuardDuty を下記ドキュメントを元に有効化します。
GuardDuty の開始方法 - Amazon GuardDuty
S3 静的ウェブサイトホスティング
下記ドキュメントを元に S3 静的ウェブサイトホスティング用のバケットを作成し、インターネットからアクセスできるようにします。
Amazon S3 を使用して静的ウェブサイトをホスティングする - Amazon Simple Storage Service
Web ページを開くとこのように、パブリックアクセス可能となっています。
GuardDuty の検出結果を確認する
GuardDuty が S3 バケットがパブリックアクセス可能な状態にされたことを検知しています。
GuardDuty の検出結果を抑制する
「検出結果の抑制」ボタンを押下し、絞り込み条件として、対象の S3 バケット名、検出結果タイプ: Policy:S3/BucketAnonymousAccessGranted
、及び、Policy:S3/BucketBlockPublicAccessDisabled
を追加します。
抑制対象としたい結果が表示されることを確認し、フィルタルールの名前を付け、保存ボタンを押下します。
すぐに適用されることはありませんが、自動的にアーカイブ済みになるとの記載が確認できます。
数日後、再度 S3 バケットの操作をしてみた
S3 バケットとパブリックアクセス可能な状態から、ブロックパブリックアクセスをオンにし、バケットポリシーの削除を行い、再度パブリックアクセス可能な状態にしました。
すると、アーカイブ済みの状態で検出されるようになりました。
想定通り、検出結果が自動的にアーカイブ済みとして検出されることが確認できました!